home *** CD-ROM | disk | FTP | other *** search
/ Amiga Games: Greatest Hits 1996 / Amiga Games: Greatest Hits 1996.iso / spiele / publicdomain / ls-tron3.1 / control.i next >
Text File  |  1996-03-19  |  20KB  |  598 lines

  1. { "control.i" }
  2.  
  3. PROCEDURE SetControls;
  4.  
  5.   CONST CGad11  : Gadget    = (NIL, 21, 34,169, 62,GadghNone,
  6.                                RelVerify,BOOLGADGET,NIL,NIL,NIL,
  7.                                0,NIL,10,NIL);
  8.         CGad12  : Gadget    = (NIL,171, 34,319, 62,GadghNone,
  9.                                RelVerify,BOOLGADGET,NIL,NIL,NIL,
  10.                                0,NIL,11,NIL);
  11.         CGad13  : Gadget    = (NIL,321, 34,469, 62,GadghNone,
  12.                                RelVerify,BOOLGADGET,NIL,NIL,NIL,
  13.                                0,NIL,12,NIL);
  14.         CGad14  : Gadget    = (NIL,471, 34,619, 62,GadghNone,
  15.                                RelVerify,BOOLGADGET,NIL,NIL,NIL,
  16.                                0,NIL,13,NIL);
  17.  
  18.         CGad21  : Gadget    = (NIL, 21, 64,169, 92,GadghNone,
  19.                                RelVerify,BOOLGADGET,NIL,NIL,NIL,
  20.                                0,NIL,20,NIL);
  21.         CGad22  : Gadget    = (NIL,171, 64,319, 92,GadghNone,
  22.                                RelVerify,BOOLGADGET,NIL,NIL,NIL,
  23.                                0,NIL,21,NIL);
  24.         CGad23  : Gadget    = (NIL,321, 64,469, 92,GadghNone,
  25.                                RelVerify,BOOLGADGET,NIL,NIL,NIL,
  26.                                0,NIL,22,NIL);
  27.         CGad24  : Gadget    = (NIL,471, 64,619, 92,GadghNone,
  28.                                RelVerify,BOOLGADGET,NIL,NIL,NIL,
  29.                                0,NIL,23,NIL);
  30.  
  31.         CGad31  : Gadget    = (NIL, 21, 94,169,122,GadghNone,
  32.                                RelVerify,BOOLGADGET,NIL,NIL,NIL,
  33.                                0,NIL,30,NIL);
  34.         CGad32  : Gadget    = (NIL,171, 94,319,122,GadghNone,
  35.                                RelVerify,BOOLGADGET,NIL,NIL,NIL,
  36.                                0,NIL,31,NIL);
  37.         CGad33  : Gadget    = (NIL,321, 94,469,122,GadghNone,
  38.                                RelVerify,BOOLGADGET,NIL,NIL,NIL,
  39.                                0,NIL,32,NIL);
  40.         CGad34  : Gadget    = (NIL,471, 94,619,122,GadghNone,
  41.                                RelVerify,BOOLGADGET,NIL,NIL,NIL,
  42.                                0,NIL,33,NIL);
  43.  
  44.         CGad41  : Gadget    = (NIL, 21,124,169,152,GadghNone,
  45.                                RelVerify,BOOLGADGET,NIL,NIL,NIL,
  46.                                0,NIL,40,NIL);
  47.         CGad42  : Gadget    = (NIL,171,124,319,152,GadghNone,
  48.                                RelVerify,BOOLGADGET,NIL,NIL,NIL,
  49.                                0,NIL,41,NIL);
  50.         CGad43  : Gadget    = (NIL,321,124,469,152,GadghNone,
  51.                                RelVerify,BOOLGADGET,NIL,NIL,NIL,
  52.                                0,NIL,42,NIL);
  53.         CGad44  : Gadget    = (NIL,471,124,619,152,GadghNone,
  54.                                RelVerify,BOOLGADGET,NIL,NIL,NIL,
  55.                                0,NIL,43,NIL);
  56.  
  57.         CGad51  : Gadget    = (NIL, 21,154,169,182,GadghNone,
  58.                                RelVerify,BOOLGADGET,NIL,NIL,NIL,
  59.                                0,NIL,50,NIL);
  60.         CGad52  : Gadget    = (NIL,171,154,319,182,GadghNone,
  61.                                RelVerify,BOOLGADGET,NIL,NIL,NIL,
  62.                                0,NIL,51,NIL);
  63.         CGad53  : Gadget    = (NIL,321,154,469,182,GadghNone,
  64.                                RelVerify,BOOLGADGET,NIL,NIL,NIL,
  65.                                0,NIL,52,NIL);
  66.         CGad54  : Gadget    = (NIL,471,154,619,182,GadghNone,
  67.                                RelVerify,BOOLGADGET,NIL,NIL,NIL,
  68.                                0,NIL,53,NIL);
  69.  
  70.         CGad61  : Gadget    = (NIL, 21,184,169,212,GadghNone,
  71.                                RelVerify,BOOLGADGET,NIL,NIL,NIL,
  72.                                0,NIL,60,NIL);
  73.         CGad62  : Gadget    = (NIL,171,184,319,212,GadghNone,
  74.                                RelVerify,BOOLGADGET,NIL,NIL,NIL,
  75.                                0,NIL,61,NIL);
  76.         CGad63  : Gadget    = (NIL,321,184,469,212,GadghNone,
  77.                                RelVerify,BOOLGADGET,NIL,NIL,NIL,
  78.                                0,NIL,62,NIL);
  79.         CGad64  : Gadget    = (NIL,471,184,619,212,GadghNone,
  80.                                RelVerify,BOOLGADGET,NIL,NIL,NIL,
  81.                                0,NIL,63,NIL);
  82.  
  83.         QuitGad : Gadget    = (NIL,246,214,394,242,GadghNone,
  84.                                RelVerify,BOOLGADGET,NIL,NIL,NIL,
  85.                                0,NIL,0,NIL);
  86.  
  87.   VAR cWindow   : WindowPtr;
  88.       cRastPort : RastPortPtr;
  89.       cMSG      : IntuiMessagePtr;
  90.       Joy1Used,
  91.       Joy2Used  : BOOLEAN;
  92.  
  93.   FUNCTION NotUsed(code : BYTE) : BOOLEAN;
  94.  
  95.     VAR zaehler : BYTE;
  96.         ergebnis: BOOLEAN;
  97.  
  98.     BEGIN
  99.       code:=code AND $7f;
  100.  
  101.       ergebnis:=TRUE;
  102.  
  103.       IF Code=F10 THEN ergebnis:=FALSE; {  ? F10 ?  }
  104.       IF Code=$45 THEN ergebnis:=FALSE; {  Escape   }
  105.       IF Code=$19 THEN ergebnis:=FALSE; { Taste "P" }
  106.  
  107.       FOR zaehler:=1 TO maxplay DO
  108.         BEGIN
  109.           WITH TBase^.players[zaehler].plcontrol DO
  110.             BEGIN
  111.               If (links        =code) OR
  112.                  (rechts       =code) OR
  113.                  (vorne AND $7f=code) THEN
  114.                  ergebnis:=FALSE;
  115.             END;
  116.         END;
  117.  
  118.       NotUsed:=ergebnis;
  119.     END;
  120.  
  121.   PROCEDURE GetPosition(VAR x,y : SHORT;nummer,element : BYTE);
  122.  
  123.     CONST abstand = 22;
  124.           platz   = 30;
  125.  
  126.     BEGIN
  127.       IF nummer=maxplay+1 THEN
  128.          BEGIN
  129.            x:=320;
  130.            y:=232;
  131.          END
  132.         ELSE
  133.          BEGIN
  134.            CASE element OF
  135.              0 : x:= 95;
  136.              1 : x:=245;
  137.              2 : x:=395;
  138.              3 : x:=545;
  139.            END;
  140.            y:=abstand+platz*nummer;
  141.          END;
  142.     END;
  143.  
  144.   PROCEDURE WriteControl(nummer,element,farbe : BYTE);
  145.  
  146.     VAR meinString : STRING;
  147.         x,y        : SHORT;
  148.  
  149.     BEGIN
  150.       meinString:=ALLOCSTRING(20);
  151.  
  152.       GetPosition(x,y,nummer,element);
  153.  
  154.       WITH TBase^.players[nummer] DO
  155.         CASE element OF
  156.           0 : BEGIN
  157.                 StrCpy(Meinstring,name);
  158.               END;
  159.           1 : BEGIN
  160.                 IF Sprache=Deutsch THEN
  161.                    CASE steuerung OF
  162.                      Tasten : Code2String(plcontrol.links,MeinString);
  163.                      Joy1   : StrCpy(Meinstring,"Links 1");
  164.                      Joy2   : StrCpy(Meinstring,"Links 2");
  165.                    END
  166.                   ELSE
  167.                    CASE steuerung OF
  168.                      Tasten : Code2StringEng(plcontrol.links,MeinString);
  169.                      Joy1   : StrCpy(Meinstring,"Left 1");
  170.                      Joy2   : StrCpy(Meinstring,"Left 2");
  171.                    END
  172.               END;
  173.           2 : BEGIN
  174.                 IF Sprache=Deutsch THEN
  175.                    CASE steuerung OF
  176.                      Tasten : Code2String(plcontrol.rechts,MeinString);
  177.                      Joy1   : StrCpy(Meinstring,"Rechts 1");
  178.                      Joy2   : StrCpy(Meinstring,"Rechts 2");
  179.                    END
  180.                   ELSE
  181.                    CASE steuerung OF
  182.                      Tasten : Code2StringEng(plcontrol.rechts,MeinString);
  183.                      Joy1   : StrCpy(Meinstring,"Right 1");
  184.                      Joy2   : StrCpy(Meinstring,"Right 2");
  185.                    END;
  186.               END;
  187.           3 : BEGIN
  188.                 IF Sprache=Deutsch THEN
  189.                    CASE steuerung OF
  190.                      Tasten : Code2String(plcontrol.vorne AND $7f,MeinString);
  191.                      Joy1   : StrCpy(Meinstring,"Feuer 1");
  192.                      Joy2   : StrCpy(Meinstring,"Feuer 2");
  193.                    END
  194.                   ELSE
  195.                    CASE steuerung OF
  196.                      Tasten : Code2StringEng(plcontrol.vorne AND $7f,MeinString);
  197.                      Joy1   : StrCpy(Meinstring,"Fire 1");
  198.                      Joy2   : StrCpy(Meinstring,"Fire 2");
  199.                    END;
  200.               END;
  201.         END;
  202.  
  203.       Print(cRastPort,x-48,y,"                  ",0);
  204.       Print(cRastPort,x-(Length(Meinstring) DIV 2),y,Meinstring,farbe);
  205.  
  206.       Freestring(MeinString);
  207.     END;
  208.  
  209.   PROCEDURE Normal(nummer,element : BYTE);
  210.  
  211.     BEGIN
  212.       IF Nummer=maxplay+1 THEN
  213.          BEGIN
  214.            IF Sprache=Deutsch THEN Print(cRastPort,308,230,"Ende",8)
  215.                               ELSE Print(cRastPort,308,230,"Quit",8);
  216.          END
  217.         ELSE WriteControl(nummer,element,8);
  218.     END;
  219.  
  220.   PROCEDURE Mark(nummer,element : BYTE);
  221.  
  222.     BEGIN
  223.       IF Nummer=maxplay+1 THEN
  224.          BEGIN
  225.            IF Sprache=Deutsch THEN Print(cRastPort,308,230,"Ende",1)
  226.                               ELSE Print(cRastPort,308,230,"Quit",1);
  227.          END
  228.         ELSE  WriteControl(nummer,element,1);
  229.     END;
  230.  
  231.   PROCEDURE WriteControls(nummer : BYTE);
  232.  
  233.     VAR x : BYTE;
  234.  
  235.     BEGIN
  236.       FOR x:=0 TO 3 DO
  237.         WriteControl(nummer,x,8);
  238.     END;
  239.  
  240.   PROCEDURE HighlightBox(nummer,element : BYTE);
  241.  
  242.     VAR x,y : SHORT;
  243.  
  244.     BEGIN
  245.       GetPosition(x,y,nummer,element);
  246.  
  247.       DrawIBox(cRastPort,x-74,y-18,x+74,y+10);
  248.  
  249.       SetAPen(cRastPort,10);
  250.       RectFill(cRastPort,x-73,y-17,x+73,y+9);
  251.     END;
  252.  
  253.   PROCEDURE UnHighlightBox(nummer,element : BYTE);
  254.  
  255.     VAR x,y : SHORT;
  256.  
  257.     BEGIN
  258.       GetPosition(x,y,nummer,element);
  259.  
  260.       DrawBox(cRastPort,x-74,y-18,x+74,y+10);
  261.  
  262.       SetAPen(cRastPort,0);
  263.       RectFill(cRastPort,x-73,y-17,x+73,y+9);
  264.     END;
  265.  
  266.   PROCEDURE ReadControl(nummer,element : BYTE);
  267.  
  268.     VAR x,y  : SHORT;
  269.         sMSG : IntuiMessagePtr;
  270.  
  271.     BEGIN
  272.       GetPosition(x,y,nummer,element);
  273.  
  274.       IF element = 0 THEN
  275.          BEGIN
  276.            HighlightBox(nummer,element);
  277.  
  278.            WITH TBase^.players[nummer] DO
  279.              BEGIN
  280.                CASE steuerung OF
  281.                  Tasten : BEGIN
  282.                             IF NOT Joy1Used THEN
  283.                                BEGIN
  284.                                  steuerung:=joy1;
  285.                                  Joy1Used:=TRUE;
  286.                                END
  287.                               ELSE
  288.                                IF NOT Joy2Used THEN
  289.                                   BEGIN
  290.                                     steuerung:=Joy2;
  291.                                     Joy2used:=TRUE;
  292.                                   END;
  293.                           END;
  294.                  Joy1   : BEGIN
  295.                             Joy1Used:=FALSE;
  296.                             IF NOT Joy2Used THEN
  297.                                BEGIN
  298.                                  steuerung:=Joy2;
  299.                                  Joy2Used:=TRUE;
  300.                                END
  301.                               ELSE
  302.                                BEGIN
  303.                                  Steuerung:=Tasten;
  304.                                END;
  305.                           END;
  306.                  Joy2   : BEGIN
  307.                             Joy2Used:=FALSE;
  308.                             steuerung:=Tasten;
  309.                           END;
  310.                END;
  311.              END;
  312.  
  313.            UnhighlightBox(nummer,element);
  314.            WriteControls(nummer);
  315.          END
  316.         ELSE
  317.          IF TBase^.players[nummer].steuerung=Tasten THEN
  318.             BEGIN
  319.               HighlightBox(nummer,element);
  320.  
  321.               sMSG:=NIL;
  322.               sMSG:=ADDRESS(WaitPort(cWindow^.UserPort));
  323.               sMsg:=ADDRESS(GetMsg(cWindow^.UserPort));
  324.               IF sMSg<>NIL THEN ReplyMsg(ADDRESS(sMsg));
  325.  
  326.               sMsg:=NIL;
  327.               REPEAT
  328.                 IF sMSg<>NIL THEN ReplyMsg(ADDRESS(sMsg));
  329.                 sMSG:=NIL;
  330.                 sMSG:=ADDRESS(WaitPort(cWindow^.UserPort));
  331.                 sMsg:=ADDRESS(GetMsg(cWindow^.UserPort));
  332.               UNTIL sMsg^.class=RawKey_F;
  333.  
  334.               IF sMsg<>NIL THEN
  335.                  BEGIN
  336.                    IF sMsg^.class=Rawkey_f THEN
  337.                       IF NotUsed(sMSG^.Code) THEN
  338.                          WITH TBase^.players[nummer].plcontrol DO
  339.                            BEGIN
  340.                              CASE element OF
  341.                                1 : links :=sMsg^.code AND $7f;
  342.                                2 : rechts:=sMsg^.code AND $7f;
  343.                                3 : vorne :=sMsg^.code OR  $80;
  344.                              END;
  345.                            END;
  346.                    ReplyMSG(ADDRESS(sMsg));
  347.                  END;
  348.  
  349.               UnhighlightBox(nummer,element);
  350.             END;
  351.  
  352.       KillMSGs(cWindow^.Userport);
  353.     END;
  354.  
  355.   PROCEDURE COpen;
  356.  
  357.     PROCEDURE DrawBoxes;
  358.  
  359.       BEGIN
  360.         DrawBox(cRastPort, 21,  4,169, 32);
  361.         DrawBox(cRastPort, 21, 34,169, 62);
  362.         DrawBox(cRastPort, 21, 64,169, 92);
  363.         DrawBox(cRastPort, 21, 94,169,122);
  364.         DrawBox(cRastPort, 21,124,169,152);
  365.         DrawBox(cRastPort, 21,154,169,182);
  366.         DrawBox(cRastPort, 21,184,169,212);
  367.  
  368.         DrawBox(cRastPort,171,  4,319, 32);
  369.         DrawBox(cRastPort,171, 34,319, 62);
  370.         DrawBox(cRastPort,171, 64,319, 92);
  371.         DrawBox(cRastPort,171, 94,319,122);
  372.         DrawBox(cRastPort,171,124,319,152);
  373.         DrawBox(cRastPort,171,154,319,182);
  374.         DrawBox(cRastPort,171,184,319,212);
  375.  
  376.         DrawBox(cRastPort,321,  4,469, 32);
  377.         DrawBox(cRastPort,321, 34,469, 62);
  378.         DrawBox(cRastPort,321, 64,469, 92);
  379.         DrawBox(cRastPort,321, 94,469,122);
  380.         DrawBox(cRastPort,321,124,469,152);
  381.         DrawBox(cRastPort,321,154,469,182);
  382.         DrawBox(cRastPort,321,184,469,212);
  383.  
  384.         DrawBox(cRastPort,471,  4,619, 32);
  385.         DrawBox(cRastPort,471, 34,619, 62);
  386.         DrawBox(cRastPort,471, 64,619, 92);
  387.         DrawBox(cRastPort,471, 94,619,122);
  388.         DrawBox(cRastPort,471,124,619,152);
  389.         DrawBox(cRastPort,471,154,619,182);
  390.         DrawBox(cRastPort,471,184,619,212);
  391.  
  392.         DrawBox(cRastPort,246,214,394,242);
  393.       END;
  394.  
  395.     CONST cNewWindow : NewWindow = (0,10,640,246,0,0,RawKey_F+GadgetDown_f+
  396.                                     Gadgetup_f,SMART_Refresh+ACTIVATE+
  397.                                     RMBTrap+Borderless,NIL,NIL,NIL,NIL,NIL,
  398.                                     640,246,640,246,CUSTOMSCREEN_F);
  399.  
  400.     PROCEDURE InitGadgets;
  401.  
  402.       BEGIN
  403.         SetGadget(ADR(CGad11),NIL        ,NIL,NIL,NIL);
  404.         SetGadget(ADR(CGad12),ADR(CGad11),NIL,NIL,NIL);
  405.         SetGadget(ADR(CGad13),ADR(CGad12),NIL,NIL,NIL);
  406.         SetGadget(ADR(CGad14),ADR(CGad13),NIL,NIL,NIL);
  407.  
  408.         SetGadget(ADR(CGad21),ADR(CGad14),NIL,NIL,NIL);
  409.         SetGadget(ADR(CGad22),ADR(CGad21),NIL,NIL,NIL);
  410.         SetGadget(ADR(CGad23),ADR(CGad22),NIL,NIL,NIL);
  411.         SetGadget(ADR(CGad24),ADR(CGad23),NIL,NIL,NIL);
  412.  
  413.         SetGadget(ADR(CGad31),ADR(CGad24),NIL,NIL,NIL);
  414.         SetGadget(ADR(CGad32),ADR(CGad31),NIL,NIL,NIL);
  415.         SetGadget(ADR(CGad33),ADR(CGad32),NIL,NIL,NIL);
  416.         SetGadget(ADR(CGad34),ADR(CGad33),NIL,NIL,NIL);
  417.  
  418.         SetGadget(ADR(CGad41),ADR(CGad34),NIL,NIL,NIL);
  419.         SetGadget(ADR(CGad42),ADR(CGad41),NIL,NIL,NIL);
  420.         SetGadget(ADR(CGad43),ADR(CGad42),NIL,NIL,NIL);
  421.         SetGadget(ADR(CGad44),ADR(CGad43),NIL,NIL,NIL);
  422.  
  423.         SetGadget(ADR(CGad51),ADR(CGad44),NIL,NIL,NIL);
  424.         SetGadget(ADR(CGad52),ADR(CGad51),NIL,NIL,NIL);
  425.         SetGadget(ADR(CGad53),ADR(CGad52),NIL,NIL,NIL);
  426.         SetGadget(ADR(CGad54),ADR(CGad53),NIL,NIL,NIL);
  427.  
  428.         SetGadget(ADR(CGad61),ADR(CGad54),NIL,NIL,NIL);
  429.         SetGadget(ADR(CGad62),ADR(CGad61),NIL,NIL,NIL);
  430.         SetGadget(ADR(CGad63),ADR(CGad62),NIL,NIL,NIL);
  431.         SetGadget(ADR(CGad64),ADR(CGad63),NIL,NIL,NIL);
  432.  
  433.         SetGadget(ADR(QuitGad),ADR(CGad64),NIL,NIL,NIL);
  434.  
  435.         cNewWindow.FirstGadget:=ADR(QuitGad);
  436.       END;
  437.  
  438.     BEGIN
  439.       InitGadgets;
  440.  
  441.       cNewWindow.screen:=MyScreen;     { Fenster öffnen }
  442.       cWindow:=NIL;
  443.       cWindow:=OpenWindow(ADR(cNewWindow));
  444.       IF cWindow=NIL THEN CleanExit(Error_No_Window);
  445.       cRastPort:=cWindow^.RPort;
  446.  
  447.       ViewMouse(cWindow);               { Mauszeiger einstellen }
  448.  
  449.       SetAPen(cRastPort,1);
  450.       Line(cRastPort,0,0,639,0);
  451.       DrawIBox(cRastPort,0,1,639,245);
  452.       DrawIBox(cRastPort,1,1,638,245);
  453.       Draw0Box(cRastPort,2,2,637,244);
  454.       Draw0Box(cRastPort,3,3,636,243);
  455.  
  456.       DrawBoxes;
  457.     END;
  458.  
  459.   VAR x,y,code       : SHORT;
  460.       element,nummer : BYTE;
  461.  
  462.   BEGIN
  463.     COpen;
  464.  
  465.     GetPosition(x,y,0,0);
  466.     Print(cRastPort,x-15,y,"Name",8);
  467.  
  468.     GetPosition(x,y,0,1);
  469.     IF Sprache=Deutsch THEN Print(cRastPort,x-15,y,"links",8)
  470.                        ELSE Print(cRastPort,x-12,y,"left",8);
  471.  
  472.     GetPosition(x,y,0,2);
  473.     IF Sprache=Deutsch THEN Print(cRastPort,x-18,y,"rechts",8)
  474.                        ELSE Print(cRastPort,x-15,y,"right",8);
  475.  
  476.     GetPosition(x,y,0,3);
  477.     IF Sprache=Deutsch THEN Print(cRastPort,x-15,y,"vorne",8)
  478.                        ELSE Print(cRastPort,x-21,y,"forward",8);
  479.  
  480.     Joy1Used:=FALSE;
  481.     Joy2Used:=FALSE;
  482.  
  483.     FOR nummer:=1 TO maxplay DO
  484.       BEGIN
  485.         IF TBase^.players[nummer].steuerung=Joy1 THEN Joy1Used:=TRUE;
  486.         IF TBase^.players[nummer].steuerung=Joy2 THEN Joy2Used:=TRUE;
  487.         WriteControls(nummer);
  488.       END;
  489.  
  490.     IF Sprache=Deutsch THEN Print(cRastPort,308,230,"Ende",8)
  491.                        ELSE Print(cRastPort,308,230,"Quit",8);
  492.  
  493.     element:=1;
  494.     nummer:=1;
  495.     Mark(nummer,element);
  496.  
  497.     REPEAT
  498.       code:=0;
  499.       cMSG:=NIL;
  500.       cMSG:=ADDRESS(WaitPort(cWindow^.UserPort));
  501.       cMSG:=ADDRESS(GetMSG  (cWindow^.UserPort));
  502.  
  503.       IF cMSG<>NIL THEN
  504.          BEGIN
  505.            IF (cMsg^.Class=Rawkey_f    ) OR
  506.               (cMsg^.Class=Gadgetup_f  ) OR
  507.               (cMsg^.Class=GadgetDown_f) THEN
  508.               BEGIN
  509.                 IF cMsg^.Class=RawKey_f THEN
  510.                    BEGIN
  511.                      code:=cMSG^.Code;
  512.                    END
  513.                   ELSE
  514.                    BEGIN
  515.                      Code:=GetGadgetID(cMsg^.IAddress);
  516.  
  517.                      IF Code>0 THEN
  518.                         BEGIN
  519.                           Normal(nummer,element);
  520.  
  521.                           nummer :=Code DIV 10;
  522.                           element:=Code MOD 10;
  523.  
  524.                           Mark(nummer,element);
  525.                         END
  526.                        ELSE
  527.                         BEGIN
  528.                           nummer:=maxplay+1;
  529.                         END;
  530.  
  531.                      Code:=68;
  532.                    END;
  533.  
  534.                 CASE code OF
  535.                   76 : BEGIN
  536.                          IF nummer>1 THEN
  537.                             BEGIN
  538.                               Normal(nummer,element);
  539.                               nummer:=nummer-1;
  540.                               Mark(nummer,element);
  541.                             END;
  542.                        END;
  543.                   77 : BEGIN
  544.                          IF nummer<maxplay+1 THEN
  545.                             BEGIN
  546.                               Normal(nummer,element);
  547.                               inc(nummer);
  548.                               Mark(nummer,element);
  549.                             END
  550.                        END;
  551.                   78 : BEGIN
  552.                          IF element<3 THEN
  553.                             BEGIN
  554.                               Normal(nummer,element);
  555.                               inc(element);
  556.                               Mark(nummer,element);
  557.                             END;
  558.                        END;
  559.                   79 : BEGIN
  560.                          IF element>0 THEN
  561.                             BEGIN
  562.                               Normal(nummer,element);
  563.                               element:=element-1;
  564.                               Mark(nummer,element);
  565.                             END;
  566.                        END;
  567.                   67,
  568.                   68 : BEGIN
  569.                          IF nummer=Maxplay+1 THEN
  570.                             BEGIN
  571.                               HighlightBox(nummer,element);
  572.                               SetBPen(cRastPort,10);
  573.                               Mark(nummer,element);
  574.  
  575.                               code:=F10;
  576.                               Delay(10);
  577.  
  578.                               UnHighlightBox(nummer,element);
  579.                               SetBPen(cRastPort,0);
  580.                               Mark(nummer,element);
  581.                             END
  582.                            ELSE
  583.                             BEGIN
  584.                               ReadControl(nummer,element);
  585.                               Mark(nummer,element);
  586.                             END;
  587.                        END;
  588.                  ELSE;
  589.                 END;
  590.               END;
  591.            ReplyMsg(ADDRESS(cMSG));
  592.          END;
  593.  
  594.     UNTIL (code=F10);
  595.  
  596.     CloseWindow(cWindow);
  597.   END;
  598.